home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Texty / ImpByOrd / ImpByOrd.asm next >
Assembly Source File  |  1999-11-13  |  2KB  |  59 lines

  1. ; I used MASM 6.14
  2.  
  3. .586P
  4.  
  5. .MODEL       FLAT, STDCALL
  6.  
  7.  OPTION      CASEMAP: NONE
  8.  
  9.  UNICODE     = 0
  10.  INCLUDE     WINDOWS.inc
  11.  INCLUDE     APIMACRO.mac
  12.  
  13.  INCLUDELIB  iKERNEL32sub.lib
  14.  INCLUDELIB  iUSER32sub.lib
  15.  
  16. .DATA
  17.    TEXT      zTitle,   <VxDCall Test/0>
  18.    TEXT      zPress,   <VWIN32 version is: 0x/#0.4X./0>
  19.    TEXT      KERNEL32, <KERNEL32/0>
  20.  
  21. .DATA?
  22.    Place     SIGN 64 DUP (?)
  23.  
  24. .CODE
  25.  PrimaryThread:
  26.  
  27.    ;9x symptom is that GetProcAddress for Ord fails for K32
  28.    iWin32i   GetModuleHandle, sKERNEL32
  29.    iWin32    GetProcAddress, EAX, 1
  30.    TEST      EAX, EAX
  31.    MOV       EAX, -1
  32.    JNE       Exit   ;not 9x  
  33.  
  34.  
  35.    ; as always there are 2 possibilities (EliASM specific):
  36.    ; the 1st is to use instructions-macros: iWin32, iMOV, iCMP, ...
  37.  
  38.    ;and the 2nd is to use iEXTERN and then normal instructions
  39.    iEXTERN   KERNEL32_ORD_0001
  40.    CMP       KERNEL32_ORD_0001, 80000000H 
  41.    JB        Exit     
  42.    PUSH      002A0000H
  43.    CALL      KERNEL32_ORD_0001
  44.  
  45.    ;  i recommend to use the 1st method, because it doesn't "consume name":
  46.    ; name KERNEL32_ORD_0001 can be used for other purposes - you can use it for
  47.    ; example as string name: TEXT KERNEL32_ORD_0001, <Ord1/0>
  48.    ;  while the 2nd method declares KERNEL32_ORD_0001 for the next use, so the
  49.    ; name can't be used for other declarations/definitions
  50.  
  51.    MOV       EBX, OFFSET Place
  52.    icWin32i  wsprintf, EBX, szPress, EAX
  53.    iEXTERNi  MessageBox
  54.    sWin32    MessageBox, NULL, EBX, szTitle, MB_OK
  55.   Exit:
  56.    iWin32    ExitProcess, EAX
  57.  
  58.  
  59. END PrimaryThread